package com.sunlee.common.service.service;

import com.sunlee.common.core.entity.PageData;
import com.sunlee.common.service.dto.CategoryDTO;
import com.sunlee.common.service.dto.ProductCategoryMappingDTO;
import com.sunlee.common.service.dto.ProductDTO;
import com.sunlee.common.service.entity.ProductCategoryMappingEntity;

import java.util.List;
import java.util.Map;

/**
 * 商品分类映射表
 */
public interface ProductCategoryMappingService extends CrudService<ProductCategoryMappingEntity, ProductCategoryMappingDTO> {

    /**
     * 查询分页商品
     *
     * @param params 分页查询参数
     * @param pId
     * @param title
     * @return 分类ID
     */
    PageData<ProductDTO> pageRelatedByCid(Map<String, Object> params, long id, int type, Long pId, String title);

    /**
     * 查询分页商品
     *
     * @param params 分页查询参数
     * @return 分类ID
     */
    PageData<CategoryDTO> pageRelatedByPid(Map<String, Object> params, long id);

    /**
     * 批量删除关联商品
     *
     * @param categoryId 分类ID
     * @param ids        商品ID集合
     * @return 是否成功
     */
    Integer deleteByCIdAndPIds(Long categoryId, Long[] ids);

    /**
     * 批量删除关联商品
     *
     * @param productId 商品ID
     * @param ids       分类ID集合
     * @return 是否成功
     */
    Integer deleteByPIdAndCIds(Long productId, Long[] ids);

    void deleteByPIds(List<Long> pIds);

    void autoMappingProductCategoryByProductId(Long productId);

    /**
     * 根据标签自动映射分类
     *
     * @param productEntity 商品实体
     */
//    void autoMappingByTag(ProductEntity productEntity);
}
